package com.dexin.rabbitmq;

import com.rabbitmq.client.*;

import java.io.IOException;

public class ReceiveTest {
    public static void main(String[] args)throws Exception {
        ConnectionFactory factory=new ConnectionFactory();
        factory.setHost("192.168.235.128");//设置RabbitMQ的主机IP
        factory.setPort(5672);//设置RabbitMQ的端口号
        factory.setUsername("admin");//设置访问用户名
        factory.setPassword("123456");//设置访问密码
        Connection connection=null;
        Channel channel=null;
        connection=factory.newConnection();
        channel=connection.createChannel();
        //消费者消费消息
        Consumer consumer = new DefaultConsumer(channel){
            @Override
            public void handleDelivery(String consumerTag, Envelope envelope, AMQP.BasicProperties properties, byte[] body) throws IOException {
                String message=new String(body,"UTF-8");
                System.out.println("接收到的消息:"+message);
            }
        };
        //将消费者对象设置到指定通道中，并监听某个队列，如果队列有新的消息则直接调用consumer对象中的handleDelivery方法获取消息
        //参数1 消息队列的名称
        //参数2 接收消息以后是否将消息从队列中移除 建议使用true 当消息处理完成后会自动的清空被处理过的消息， 可以实现解决消息被重复消费的问题
        //参数3 设定由哪个消费监听消息
        channel.basicConsume("myRoutingKey",true,consumer);
    }
}
